1. Field of the Invention
The present invention generally relates to a method and apparatus for transcoding a first coded moving picture sequence at a first bit rate into a second coded moving picture sequence at a second bit rate, lower than the first bit rate. In particular, the present invention relates to a method and apparatus for providing an accurate estimation of the fullness of the virtual buffer based on motion information of the input moving picture sequence, such that a better rate control can be achieved.
2. Description of the Prior Art
Recently, DVD-Video recording and Digital Video Recorder (DVR) have emerged in the industry. In these applications, a digital video signal associated with a digital audio signal is usually encoded and compressed into a MPEG-2 bit stream. However, the data rate of such digital video signal is varied and may depend on the source, such as HDTV at a bit rate of 19.2M bps and Sony MV at a bit rate of 12M bps. Therefore, a so-called transcoder is desired to convert an input MPEG-2 bit stream at a predetermined input bit rate into another output MPEG-2 bit stream at a predetermined output bit rate, lower than the predetermined input bit rate.
Referring to FIG. 1, there is shown a typical conventional transcoder. The conventional transcoder 100 has an input terminal a1 electrically connected to a first transmitting path, not shown, and an output terminal a2 electrically connected to a second transmitting path, not shown. The conventional transcoder 100 is designed to input a first bit stream b1 at a predetermined input bit rate through the input terminal a1, to convert the first bit stream b1 into a second bit stream b2 to be output at a predetermined output bit rate, i.e., a target bit rate, lower than the predetermined input bit rate of the first bit stream b1, and to output the second bit stream b2 through the output terminal a2.
The conventional transcoder 100 comprises a variable length decoder 101, referred to as “VLD” in the drawings, a de-quantizer 102, referred to as “IQ” in the drawings, a quantizer 103, referred to as “Q” in the drawings, a variable length encoder 104, referred to as “VLC” in the drawings, and a rate controller 105.
The variable length decoder 101 is electrically connected to the input terminal a1 and designed to decode a coded moving picture sequence signal within the first bit streams b1 inputted through the input terminal a1 to reconstruct an original picture data for each of the pictures, including a matrix of original quantization coefficients, referred to as “level”, for each of the macroblocks within each of the pictures and an original quantization parameter, hereinafter referred to as “first quantization parameter Q1”.
The de-quantizer 102 is electrically connected to the variable length decoder 101 and designed to input the matrix of original quantization coefficients level from the variable length decoder 101 and the first quantization parameter Q1. The de-quantizer 102 is further designed to inversely quantize the inputted matrix of original quantization coefficients level with the first quantization parameter Q1 to generate a matrix of de-quantization coefficients, referred to as “dequant”, i.e., DCT coefficients, for each of the macroblocks as follows:Dequant={2×level+sign(level)}×(Q1×QM)/32  (1)Dequant=level×(Q1×QM)/16  (2)where the equation (1) is used for the inter macroblock, while the equation (2) is used for the intra macroblock. QM is a matrix of quantization parameters stored in a predetermined quantization table. The first quantization parameter Q1 and the matrix of quantization parameters QM are derived from the first bit streams b1 by the variable length decoder 101. Here, the original quantization coefficients level, the de-quantization coefficients dequant, the matrix of quantization parameters QM, and the first quantization parameter Q1 are integers. The de-quantization coefficients dequant calculated by the equations (1) and (2) should be rounded down to the nearest one.
The quantizer 103 is electrically connected to the de-quantizer 102 and designed to input the matrix of de-quantization coefficients dequant from the de-quantizer 102 and then quantize the inputted matrix of de-quantization coefficients dequant for each of the macroblocks with a second quantization parameter, referred to as “Q2” hereinafter, to generate a matrix of re-quantization coefficients, referred to as “tlevel”, as follows:tlevel=dequant×16/(Q2×QM)  (3)tlevel=dequant×16/(Q2×QM)+sign(dequant)/2  (4)where the equation (3) is used for the inter macroblock, while the equation (4) is used for the intra macroblock. The second quantization parameter Q2 is obtained by the rate controller 105. Here, the re-quantization coefficients tlevel and the second quantization parameter Q2 are also integers. The re-quantization coefficients tlevel calculated by the equations (3) and (4) should be rounded down to the nearest one. Such rounding operation for the integers will be omitted from the later description for avoiding tedious repetition.
The variable length encoder 104 is electrically connected to the quantizer 103 and designed to input the re-quantization coefficients tlevel from the quantizer 103 and then encode the inputted matrix of the re-quantization coefficients tlevel to generate an objective picture data for each of pictures to sequentially output the objective picture data in the form of the second bit streams b2 through the output terminal a2. The variable length encoder 104 is further electrically connected to the variable length decoder 101 and designed to input a diversity of information included in the first bit streams b1 necessary for the second bit streams b2 from the variable length decoder 101.
The rate controller 105 is electrically connected to the de-quantizer 102 and designed to perform a rate control over the encoding in the conventional transcoder 100, for example, according to the TM5, a typical rate controlling method in MPEG-2 standard referenced to “ISO-IEC/JTC1/SC29/WG11/N0400 Test Model 5”, on the basis of the information obtained from the de-quantizer 102 as described below.
Referring to FIG. 2 of the drawings, there is shown a flowchart of the rate controlling process according to TM-5 in the conventional transcoder 100. As shown in FIG. 2, the rate controlling process comprises steps A1 to A14.
In the step A1, “1” is assigned to the picture number variable n representing a serial number of pictures within the first bit streams b1. Hereinlater, the n-th picture in the first bit streams b1 is referred to as “pic(n)”.
In the following step A2, a global complexity measure Xi, Xp, or Xb for the corresponding type of pictures, i.e., I, P or B-picture is computed as follows:Xi=Si×Qi  (5)Xp=Sp×Qp  (6)Xb=Sb×Qb  (7)where Si, Sp, or Sb is the number of bits generated by encoding 1, P or B-picture, and Qi, Qp, or Qb is the average quantization parameter computed by averaging the actual quantization values used during the quantization of the all macroblocks within I, P or B-picture. The average quantization parameters Qi, Qp, and Qb are normalized within a range of 1 to 31. The average quantization parameters Qi, Qp, and Qb respectively correspond to the first quantization parameters Q1 obtained from the variable length decoder 101.
The global complexity measure Xi, Xp, or Xb of the corresponding picture is inversely proportional to the compressing ratio of the moving picture, namely, a ratio of the volume of information in the second bit streams b2 to that in the first bit streams b1. Namely, as the volume of information on the first bit streams b1 becomes larger, the compressing ratio is decreased. Therefore, the global complexity measure Xi, Xp, or Xb of the corresponding picture becomes larger, as the compressing ratio is decreased. In contrast, the global complexity measure Xi, Xp, or Xb of the corresponding picture becomes smaller, as the compressing ratio is increased.
The initial value of global complexity measure Xi, Xp, or Xb of the corresponding picture is given as follows:Xi=160×Target_Bitrate/115  (8)Xp=60×Target_Bitrate/115  (9)Xb=42×Target_Bitrate/115  (10)where Target_Bitrate is measured in bits/s and corresponds to the target bit rate of the first conventional transcoder 100.
In the following step A3, the target number of bits for the next picture in the current GROUP OF PICTURES Ti, Tp, or Tb is computed as:Ti=R/(1+NpXp/XiKp+NbXb/XiKb)  (11)Tp=R/(Np+NbKpXb/KbXp)  (12)Tb=R/(Nb+NpKbXp/KpXb)  (13)where Np and Nb are the remaining number of P-pictures and B-pictures, respectively, remaining the current GROUP OF PICTURES in the encoding order. Kp and Kb are universal constants dependent on the quantization matrices. When it is assumed that Kp=1.0 and Kb=1.4, the quality of the image can be always optimized.
In the following step A4, the judgment is made whether the picture number variable n is “1” or not, i.e., the current picture is the first picture pic(1) or not. When the answer is “YES”, i.e., the current picture is the first picture pic(1), the step A4 goes to the step A5. When, on the other hand, the answer is “NO”, i.e., the current picture is not the first picture, the step A4 goes to the step A6. In the step A5, the remaining number of bits assigned to the GROUP OF PICTURES R is initialized according to the following equation (14). This remaining number of bits assigned to the GROUP OF PICTURES R is computed before encoding the first pictures pic(1) within the GROUP OF PICTURES, i.e., an I-picture, as follows:R=Target_Bitrate×NPIC/picture_rate+R  (14)where NPIC is the total number of pictures in each of the GROUP OF PICTURES, and picture_rate is expressed in the number of decoded pictures per second. At the start of the sequence R=0.
In the step A6, the above remaining number of bits assigned to the GROUP OF PICTURES R is updated before encoding the current picture pic(n) as follows:R=R−Si  (15)R=R−Sp  (16)R=R−Sb  (17)where Si, Sp, or Sb is the number of bits generated in the previous picture pic(n−1) of the corresponding type (I, P or B) just encoded.
The step A5 or A6 goes to the step A7 wherein “1” is assigned to the macroblock number variable j (j>=1) representing a serial number of macroblocks within one of the pictures. Hereinlater the j-th macroblock in the picture is referred to as “MB(j)”.
In the following step A8, the fullness of appropriate virtual buffer di(j), dp(j) or db(j) is computed depending on the picture type before encoding macroblock MB(j) as follows:di(j)=di(0)+B(j−1)−Ti×(j−1)/NMB  (18)dp(i)=dp(0)+B(j−1)−Tp×(j−1)/NMB  (19)db(j)=db(0)+B(j−1)−Tb×(j−1)/NMB  (20)where B(j−1) is the number of bits generated by encoding all macroblocks in the picture up to including (j−1)th macroblock MB(j−1). NMB is the total number of macroblocks in the picture. di(j), dp(j), or db(j) is a fullness of virtual buffer at the j-th macroblock MB(j) for I, P or B-picture.
di(0), dp(0), or db(0) is an initial fullness of virtual buffer for I, P or B-picture and given by:di(0)=10×r/31  (21)dp(0)=Kp×di(0)  (22)db(0)=Kb×di(0)  (23)where r is referred to as “reaction parameter” and, used for the control of a reaction rate of the loop of feed back as follows:r=2×Target_Bitrate/picture_rate  (24)
The final fullness of the virtual buffer di(NMB), dp(NMB), or db(NMB) of the NMB-th macroblock MB(NMB) of the current picture pic(n) is used as di(0), dp(0), or db(0) for encoding the first macroblock MB(1) within the next picture pic(n+1) of the same type.
In the following step A9, the reference quantization parameter Q(j) for the j-th macroblock MB(j) in each of pictures is computed on the basis of the above virtual buffer fullness d(j) as follows:Q(j)=d(j)×31/r  (25)
Here, the reference quantization parameter Q(j) is identical with the aforesaid second quantization parameter Q2.
In the following step A10, the j-th macroblock MB(j) is quantized with the reference quantization parameter Q(j) computed in the step A9. In the following step A11, the macroblock number variable j is incremented by 1. The step A11 goes to the step A12 wherein the judgment is made whether the macroblock number variable j is more than the total number of macroblocks NMB within the nth picture pic(n) or not. When the answer is “NO”, i.e., the macroblock number variable j is less than the total number of macroblocks NMB, the control is returned from the step A12 to the step A8. When, on the other hand, the answer is “YES”, i.e., the macroblock number variable j exceeds the total number of macroblocks NMB, the step A12 goes to the step A13.
The macroblock number variable j thus serves as a loop counter for repeating the steps A8 to A11 to encode all the macroblocks MB(j) in the present picture pic(n). The entire macroblocks, the first macroblock MB(1) up to the NMB-th macroblock MB(NMB), in the nth picture pic(n) can be thus encoded in turn.
In the step A13, the picture number variable n is incremented by 1. Then the step A13 goes to the step A14 wherein the judgment is made whether the picture number variable n is more than the total number of pictures NPIC or not. When the answer is “NO”, i.e., the picture number variable n is less than the total number of pictures NPIC, the control is returned from the step A14 to the step A2. When, on the other hand, the answer is “YES”, i.e., the picture number variable n exceeds the total number of pictures NPIC, this routine of the rate controlling process is terminated. The picture number variable n thus serves as a loop counter for repeating the steps A2 to A13 to process all the pictures pic(n) in the present GROUP OF PICTURE. The entire pictures, the first pictures pic(1) up to the NPIC-th picture pic(NPIC), in the present GROUP OF PICTURE can be therefore processed in turn.
According to the aforesaid rate controlling process and in view of the equations (18) to (20), it can be seen that the fullness of the virtual buffer di(j), dp(j), or db(j) is estimated under an assumption that the number of bits used to encode each of the macroblocks within the I, P, or B picture is constant and is not related to any motion information for each of the macroblocks. In this case, the reference quantization parameter Q(j) must be tolerant enough such that possible overflows due to the estimation will not occur. However, this also leads to a sacrifice in the quality of the output bit stream b2.
Therefore, it is an object of the present invention to provide a transcoder, which can more efficiently convert an input MPEG-2 bit stream at a predetermined bit rate into another output MPEG-2 bit stream at a target bit rate, lower than the first bit rate. In particular, the transcoder according to the present invention is implemented to consider, during the estimation of the fullness of the virtual buffers, motion information derived from the variable length decoder, and to improve the estimation using the same.